import logger from './logger'

/**
 * 应用中间件
 * @param {function} handler 原始处理函数
 * @param {string} channel 通道名称
 * @returns {function} 包装后的处理函数
 */
export function applyMiddle(handler, channel) {
  return async (event, ...args) => {
    // 1. 前置处理：日志记录
    logger.info('middle.js', `${channel}-PARAMS: \n ${args}`)

    try {
      // 执行原始处理函数
      const result = await handler(event, ...args)

      // 3. 后置处理：记录成功响应
      logger.info('middle.js', `${channel}-RESULT: \n ${JSON.stringify(result)}`)
      return result
    } catch (error) {
      // 4. 异常处理：统一错误日志
      logger.error('middle.js', `${channel}-ERROR: \n${JSON.stringify(error)}`)
      throw error
    }
  }
}
